diff --git a/system/libraries/Profiler.php b/system/libraries/Profiler.php
index 8a1f18c..d1828b9 100644
--- a/system/libraries/Profiler.php
+++ b/system/libraries/Profiler.php
@@ -32,7 +32,7 @@
  */
 class CI_Profiler {
 
-	var $CI;
+	private $CI;
 
 	protected $_available_sections = array(
 										'benchmarks',
@@ -43,6 +43,7 @@
 										'controller_info',
 										'queries',
 										'http_headers',
+										'session_data',
 										'config'
 										);
 
@@ -410,10 +411,10 @@
 		$output  = "\n\n";
 		$output .= '<fieldset id="ci_profiler_http_headers" style="border:1px solid #000;padding:6px 10px 10px 10px;margin:20px 0 20px 0;background-color:#eee">';
 		$output .= "\n";
-		$output .= '<legend style="color:#000;">&nbsp;&nbsp;'.$this->CI->lang->line('profiler_headers').'&nbsp;&nbsp;</legend>';
+		$output .= '<legend style="color:#000;">&nbsp;&nbsp;'.$this->CI->lang->line('profiler_headers').'&nbsp;&nbsp;(<span style="cursor: pointer;" onclick="var s=document.getElementById(\'ci_profiler_httpheaders_table\').style;s.display=s.display==\'none\'?\'\':\'none\';this.innerHTML=this.innerHTML==\''.$this->CI->lang->line('profiler_section_show').'\'?\''.$this->CI->lang->line('profiler_section_hide').'\':\''.$this->CI->lang->line('profiler_section_show').'\';">'.$this->CI->lang->line('profiler_section_show').'</span>)</legend>';
 		$output .= "\n";
 
-		$output .= "\n\n<table style='width:100%'>\n";
+		$output .= "\n\n<table style='width:100%;display:none' id='ci_profiler_httpheaders_table'>\n";
 
 		foreach (array('HTTP_ACCEPT', 'HTTP_USER_AGENT', 'HTTP_CONNECTION', 'SERVER_PORT', 'SERVER_NAME', 'REMOTE_ADDR', 'SERVER_SOFTWARE', 'HTTP_ACCEPT_LANGUAGE', 'SCRIPT_NAME', 'REQUEST_METHOD',' HTTP_HOST', 'REMOTE_HOST', 'CONTENT_TYPE', 'SERVER_PROTOCOL', 'QUERY_STRING', 'HTTP_ACCEPT_ENCODING', 'HTTP_X_FORWARDED_FOR') as $header)
 		{
@@ -441,10 +442,10 @@
 		$output  = "\n\n";
 		$output .= '<fieldset id="ci_profiler_config" style="border:1px solid #000;padding:6px 10px 10px 10px;margin:20px 0 20px 0;background-color:#eee">';
 		$output .= "\n";
-		$output .= '<legend style="color:#000;">&nbsp;&nbsp;'.$this->CI->lang->line('profiler_config').'&nbsp;&nbsp;</legend>';
+		$output .= '<legend style="color:#000;">&nbsp;&nbsp;'.$this->CI->lang->line('profiler_config').'&nbsp;&nbsp;(<span style="cursor: pointer;" onclick="var s=document.getElementById(\'ci_profiler_config_table\').style;s.display=s.display==\'none\'?\'\':\'none\';this.innerHTML=this.innerHTML==\''.$this->CI->lang->line('profiler_section_show').'\'?\''.$this->CI->lang->line('profiler_section_hide').'\':\''.$this->CI->lang->line('profiler_section_show').'\';">'.$this->CI->lang->line('profiler_section_show').'</span>)</legend>';
 		$output .= "\n";
 
-		$output .= "\n\n<table style='width:100%'>\n";
+		$output .= "\n\n<table style='width:100%; display:none' id='ci_profiler_config_table'>\n";
 
 		foreach ($this->CI->config->config as $config=>$val)
 		{
@@ -465,6 +466,39 @@
 	// --------------------------------------------------------------------
 
 	/**
+	 * Compile session userdata
+	 *
+	 * @return 	string
+	 */
+	private function _compile_session_data()
+	{
+		if ( ! isset($this->CI->session))
+		{
+			return;
+		}
+
+		$output = '<fieldset id="ci_profiler_csession" style="border:1px solid #000;padding:6px 10px 10px 10px;margin:20px 0 20px 0;background-color:#eee">';
+		$output .= '<legend style="color:#000;">&nbsp;&nbsp;'.$this->CI->lang->line('profiler_session_data').'&nbsp;&nbsp;(<span style="cursor: pointer;" onclick="var s=document.getElementById(\'ci_profiler_session_data\').style;s.display=s.display==\'none\'?\'\':\'none\';this.innerHTML=this.innerHTML==\''.$this->CI->lang->line('profiler_section_show').'\'?\''.$this->CI->lang->line('profiler_section_hide').'\':\''.$this->CI->lang->line('profiler_section_show').'\';">'.$this->CI->lang->line('profiler_section_show').'</span>)</legend>';
+		$output .= "<table style='width:100%;display:none' id='ci_profiler_session_data'>";
+
+		foreach ($this->CI->session->all_userdata() as $key => $val)
+		{
+			if (is_array($val))
+			{
+				$val = print_r($val, TRUE);
+			}
+
+			$output .= "<tr><td style='padding:5px; vertical-align: top;color:#900;background-color:#ddd;'>".$key."&nbsp;&nbsp;</td><td style='padding:5px; color:#000;background-color:#ddd;'>".htmlspecialchars($val)."</td></tr>\n";
+		}
+
+		$output .= '</table>';
+		$output .= "</fieldset>";
+		return $output;
+	}
+
+	// --------------------------------------------------------------------
+
+	/**
 	 * Run the Profiler
 	 *
 	 * @return	string
@@ -493,7 +527,6 @@
 
 		return $output;
 	}
-
 }
 
 // END CI_Profiler class
